/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package modules.enderecamento.security;

import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import modules.enderecamento.gui.Aplicativo;
import modules.enderecamento.gui.Login;
import modules.enderecamento.models.dto.GruposAcesso;
import modules.enderecamento.models.dto.GruposAcessosPermissao;
import modules.enderecamento.models.dto.GruposAcessosUsuario;
import modules.enderecamento.models.dto.Permissao;
import modules.enderecamento.models.dto.Usuario;

/**
 *
 * @author Clezio
 */
public class WMSSession {
    private static WMSSession instance;
    private Usuario user;
    private Login telaLogin;
    private Aplicativo aplicativo;
    private WMSSession(){}
    public synchronized static WMSSession getInstance(){
        if(instance == null){
            instance = new WMSSession();
        }
        return instance;
    }

    /**
     * @return the user
     */
    public Usuario getUser() {
        return user;
    }

    /**
     * @param user the user to set
     */
    public void setUser(Usuario user) {
        this.user = user;
    }

    public Map<Integer,Permissao> getMapPermissoes(){
        Map<Integer, Permissao> mapPermissoes = new Hashtable<Integer, Permissao>();
        if(this.user != null){
            Iterator itGruposAcessosUsuarios = this.user.getGruposAcessosUsuarioses().iterator();
            while(itGruposAcessosUsuarios.hasNext()){
                GruposAcessosUsuario gruposAcessosUsuario = (GruposAcessosUsuario) itGruposAcessosUsuarios.next();
                GruposAcesso gruposAcesso = gruposAcessosUsuario.getGruposAcessos();
                Iterator itGruposAcessosPermissao = gruposAcesso.getGruposAcessosPermissoeses().iterator();
                while(itGruposAcessosPermissao.hasNext()){
                    GruposAcessosPermissao gruposAcessosPermissao = (GruposAcessosPermissao) itGruposAcessosPermissao.next();
                    Permissao permissao = gruposAcessosPermissao.getPermissao();
                    mapPermissoes.put(permissao.getId(), permissao);
                }
            }
        }
        return mapPermissoes;
    }

    /**
     * @return the telaLogin
     */
    public Login getTelaLogin() {
        return telaLogin;
    }

    /**
     * @param telaLogin the telaLogin to set
     */
    public void setTelaLogin(Login telaLogin) {
        this.telaLogin = telaLogin;
    }

    /**
     * @return the aplicativo
     */
    public Aplicativo getAplicativo() {
        return aplicativo;
    }

    /**
     * @param aplicativo the aplicativo to set
     */
    public void setAplicativo(Aplicativo aplicativo) {
        this.aplicativo = aplicativo;
    }

}
